// websocket方式
let util = require('../util.js') 

function  webSocket(app,server){
	
	var spawn = require('child_process').spawn;
	var io = require('socket.io')(server);

	//websocket 方式
	io.on('connection', function(socket){

		// 验证域名来源
		let referer = util.checkReferer(socket.handshake.headers.referer);
		if(!referer){
			socket.emit('progress number', this.returnBeiZhu('域名来源未通过！'));
			socket.disconnect(); return false;
		}

		// 监听打包按钮
		socket.on("shell begin", async function(data){

			let isCheckSigin = util.checkSigin(data,socket)
			if(!isCheckSigin){ socket.disconnect(); return false; };

			var spawn = require('child_process').spawn,
				arr = ['-x','/data/push.sh',data.system]
			    free  = spawn('bash', arr);

			    socket.emit('progress number', `服务端执行的脚本为bash ${arr.join(' ')}` );

				// 捕获标准输出并将其打印到控制台
				free.stdout.on('data', data=>{
					socket.emit('progress number', data.toString() );
				});

				// 捕获标准错误输出并将其打印到控制台
				free.stderr.on('data', data=>{
					socket.emit('progress number', data.toString() );
				});

				// 注册子进程关闭事件
				free.on('exit', (code, signal) => {
				    socket.emit('progress number', code);
				    socket.disconnect();
				});
	    });

	});
} 

module.exports=webSocket
